﻿using EFERP;
using HRM.DICTIONARY.DAL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HRM.DICTIONARY.BLL
{
    public enum RoleCode
    {
        None = 0,
        BranchCode = 1,
        DepartmentCode = 2,
        GroupCode, 
        All
    }
    public class SystemLogin
    {
        ICommon<sys_user> exesys_user;
        public string ErrMsg { get; set; }

        public SystemLogin()
        {
            exesys_user = new Common<sys_user>(StaticVariable.ERPEn);
        }

        public bool CheckAccount(string userName, string Password)
        {
            try
            {
                if (!GetUserName(userName))
                {
                    return false;
                }
                else
                {
                    sys_user myUser = StaticVariable.UserLogin;
                    if (myUser.group_id == "employee")
                    {
                        ErrMsg = "Tài khoản của bạn không được phép truy cập vào phần mềm!";
                        StaticVariable.UserLogin = null;
                        return false;
                    }
                    if (userName == "admin" & Password == "toroerp.hrm")
                    {
                        return true;
                    }
                    
                    string PassEncrypt = StaticVariable.ToEncrypt(Password, StaticVariable.PasswKeyToEncrypt);
                    if (PassEncrypt.CompareTo(myUser.password) == 0)
                    {
                        return true;
                    }
                    else
                    {
                        ErrMsg = "Tài khoản và mật khẩu không đúng!";
                        return false;
                    }
                }
            }
            catch(Exception ex)
            {
                ErrMsg = ex.Message;
                return false;
            }
        }
        private bool GetUserName(string UserName)
        {
            if (exesys_user == null)
            {
                ErrMsg = "Không thể khởi tạo đối tượng từ bảng sys_user";
                return false;
            }
            else
            {
                sys_user myUser = null;
                List<sys_user> myDSUser = exesys_user.GetList();
                if (myDSUser != null)
                {
                    myUser = myDSUser.Single(n => n.username == UserName);
                }
                if (myUser == null)
                {
                    ErrMsg = "Tài khoản không tồn tại hoặc đã bị khóa!";
                    return false;
                }
                else
                {
                    StaticVariable.UserLogin = myUser;
                    return true;
                }
            }

        }

        public bool ChangePassword(sys_user myUpdateUser)
        {
            bool KQ = false;
            try
            {
                if (myUpdateUser == null)
                {
                    ErrMsg = "Giỡn mặt àh!!!";
                    KQ = false;
                    return KQ;
                }
                if (!GetUserName(myUpdateUser.username))
                {
                    KQ = false;
                }
                else
                {
                    sys_user myUser = myUpdateUser;
                    KQ = exesys_user.Update(myUser);
                    if (KQ)
                        ErrMsg = "Bạn đã thay đổi mật khẩu thành công!";
                    else
                        ErrMsg = "Bạn chưa thay đổi được mật khẩu mới!";
                }
            }
            catch (Exception ex)
            {
                ErrMsg = ex.Message;
                KQ = false;
            }
            return KQ;
        }
    }
}
